package br.edu.ufam.avaliacao

class FinalizadaController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def index = {
        redirect(action: "list", params: params)
    }
    
    def list = {
       
        def usuario_id = session.usuario
        List<Avaliacao> avaliacaoAvaliadores = Avaliacao.findAll("from Avaliacao a where a.usuario.id=? and a.status=?",[usuario_id,"Finalizada"])
        
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        [avaliacaoInstanceList: avaliacaoAvaliadores, avaliacaoInstanceTotal: Avaliacao.count()]
    }
          
    
    def show = {
        def avaliacaoInstance = Avaliacao.get(params.id)
        def dimensao1 = Dimensao.executeQuery("select d.titulo from Dimensao d where d.ordem=1")
        def dimensao2 = Dimensao.executeQuery("select d.titulo from Dimensao d where d.ordem=2")
        def dimensao3 = Dimensao.executeQuery("select d.titulo from Dimensao d where d.ordem=3")
        
        boolean coordenador = (session.usuario == avaliacaoInstance.curso.coordenador.id)
        
        int isCoordenador = (coordenador)? 1 : 0                        
        
        def faltaResposta1 = Resposta.findAll("from Resposta r where r.avaliacao=? and r.coordenador=? and r.conceito=-1 and r.dimensao=1",[avaliacaoInstance,isCoordenador])        
        def faltaResposta2 = Resposta.findAll("from Resposta r where r.avaliacao=? and r.coordenador=? and r.conceito=-1 and r.dimensao=2",[avaliacaoInstance,isCoordenador])
        def faltaResposta3 = Resposta.findAll("from Resposta r where r.avaliacao=? and r.coordenador=? and r.conceito=-1 and r.dimensao=3",[avaliacaoInstance,isCoordenador])        
        def faltaResposta4 = Resposta.findAll("from Resposta r where r.avaliacao=? and r.coordenador=? and r.respostaRequisitoNormativo=-1 and r.dimensao=4",[avaliacaoInstance,isCoordenador])
        
        if (!avaliacaoInstance) {
            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'avaliacao.label', default: 'Avaliacao'), params.id])}"
            redirect(action: "list")
        }
        else {
            [avaliacaoInstance: avaliacaoInstance, dimensao1: dimensao1,dimensao2: dimensao2,dimensao3: dimensao3,faltaResposta1: faltaResposta1.size(),faltaResposta2: faltaResposta2.size(),faltaResposta3: faltaResposta3.size(),,faltaResposta4: faltaResposta4.size()]
        }
    }
    
    def pdfReport = {
        
        def avaliacaoInstance = Avaliacao.get(params.id)
        
        boolean coordenador = (session.usuario == avaliacaoInstance.curso.coordenador.id)
        
        int isCoordenador = (coordenador)? 1 : 0
        
        def indicadoresDimensao1 = Indicador.executeQuery(" select i from Indicador i where i.dimensao.ordem = ? order by i.ordem", [1]) 
        def indicadoresDimensao2 = Indicador.executeQuery(" select i from Indicador i where i.dimensao.ordem = ? order by i.ordem", [2]) 
        def indicadoresDimensao3 = Indicador.executeQuery(" select i from Indicador i where i.dimensao.ordem = ? order by i.ordem", [3]) 
        def indicadoresDimensao4 = Indicador.executeQuery(" select i from Indicador i where i.dimensao.ordem = ? order by i.ordem", [4]) 
        
        
        def respostaInstance = Resposta.executeQuery("select r from Resposta r where r.avaliacao=? and r.coordenador=? order by r.dimensao,r.indicador",[avaliacaoInstance,isCoordenador])                
        

        return [indicadoresDimensao1: indicadoresDimensao1,indicadoresDimensao2: indicadoresDimensao2,indicadoresDimensao3: indicadoresDimensao3,indicadoresDimensao4: indicadoresDimensao4, avaliacaoInstance: avaliacaoInstance, respostaInstance: respostaInstance]
    }    
}